import {IsTestWgt} from "../../utils/lshttp";
import {useUserInfoStore} from "../../stores/modules/userInfo";

/**
 * 检查app版本是否需要升级
 */
const checkVersion = ({
                          name, //最新版本名称
                          code, //最新版本号
                          content, //更新内容
                          app_url,//下载链接
                          wgt_url,//下载链接
                          forceUpdate, //是否强制升级
                          hot_version //热更新版本号
                      }) => {
    let selfVersionCode = Number(uni.getSystemInfoSync().appVersionCode); //当前App版本号
    const wgtVersion = hot_version
    const useUser = useUserInfoStore() // 使用userInfoStore状态管理器
    const userIds = [68158]
    plus.runtime.getProperty(plus.runtime.appid, (appInfo) => {
        console.log("appInfo", appInfo)
        selfVersionCode = parseInt(appInfo.versionCode) //应用版本号
        console.log("selfVersionCode", selfVersionCode)
        console.log("name", name)
        console.log("content", content)
        console.log("app_url", app_url)
        console.log("wgt_url", wgt_url)
        console.log("forceUpdate", forceUpdate)
        console.log("wgtVersion", wgtVersion)
        const url = app_url
        //线上版本号高于当前，进行在线升级
        if (selfVersionCode < code) {
            console.log("整包更新")
            // 整包更新
            let platform = uni.getSystemInfoSync().platform //手机平台
            console.log(platform)
            //安卓手机弹窗升级
            if (platform === 'android' || platform === 'ios') {
                //当前页面不是升级页面跳转防止多次打开
                if (getCurrentPageRoute() !== 'pages/lq-upgrade/upgrade') {
                    uni.navigateTo({
                        url: '/pages/lq-upgrade/upgrade',
                        success() {
                            uni.$emit('upgrade-app', {
                                name,
                                content,
                                url,
                                forceUpdate
                            })
                        }
                    })
                }
            }
            //IOS无法在线升级提示到商店下载
            else {
                uni.showModal({
                    title: '发现新版本 ' + name,
                    content: '请到App store进行升级',
                    showCancel: !forceUpdate,
                    success(res) {
                        if (res.confirm) {
                            const appid = "id1671964876"; // 在App Store中的应用ID
                            // "https://itunes.apple.com/app/id" + appid; 'https://apps.apple.com/cn/app/领食周边购/id1671964876'
                            const url = `itms-apps://itunes.apple.com/cn/app/id${appid}?mt=8`
                            // plus.runtime.openURL('https://apps.apple.com/cn/app/领食周边购/id1671964876', function (error) {
                            //     console.error("打开URL出错：" + error.message);
                            //     // 错误处理
                            // });
                            plus.runtime.launchApplication({
                                action: url
                            }, function (e) {
                                console.log('Open system default browser failed: ' + e.message);
                            });
                        }
                    }
                })
            }
        } else {
            // 当前装版本大于等于服务器版本 selfVersionCode - code >= 0 且 服务器热更新版本大于当前装版版本
            // 当前安装版本403 服务器大版本 404 热更新版本405  403 - 404 = -1 小于0 整包更新  selfVersionCode - code >= 0
            // 当前安装版本404 服务器大版本 404 热更新版本404  404 - 404 = 0  等于0 404 = 404 热更新版本等于安装版本 可热更新
            // 当前安装版本404 服务器大版本 404 热更新版本405  404 - 404 = 0  等于0 405 > 404 热更新版本大于安装版本 可热更新
            // 当前安装版本405 服务器大版本 404 热更新版本405  405 - 404 = 1  大于0 405 = 405 热更新版本等于安装版本 不更新
            // 当前安装版本405 服务器大版本 404 热更新版本406  405 - 404 = 1  大于0 406 > 405 热更新版本大于安装版本 可热更新
            // 当前安装版本406 服务器大版本 404 热更新版本406  406 - 404 = 2  大于0 406 = 406 热更新版本等于安装版本 不更新
            // 当前安装版本406 服务器大版本 404 热更新版本405  406 - 404 = 2  大于0 405 < 406 热更新版本小于安装版本 不更新
            if (selfVersionCode - code >= 0 && wgtVersion > selfVersionCode && !IsTestWgt) {
                // 增量更新
                downloadFile_Wgt_Url(wgt_url)
            } else if (userIds.includes(useUser?.userInfo.id)) {
                // 测试增量更新
                downloadFile_Wgt_Url(wgt_url)
            }
        }
    })
}

const downloadFile_Wgt_Url = (wgt_url) => {
    uni.downloadFile({
        url: wgt_url,
        success: (downloadResult) => {
            if (downloadResult.statusCode === 200) {
                plus.runtime.install(downloadResult.tempFilePath, {
                    force: false
                }, function () {
                    console.log('install success...');
                    plus.runtime.restart();
                }, function (e) {
                    // 这里的错误很重要，最好能记录的服务器日志中，方便调试或以后维护了解更新错误情况，及时解决
                    // 如何更新到服务器？
                    // 调用一个接口，将e返回咯
                    console.error('install fail...', e.toString());
                });
            }
        }
    });
}

//获取当前页面url
const getCurrentPageRoute = () => {
    let currentRoute;
    let pages = getCurrentPages() // 获取栈实例
    if (pages && pages.length) {
        currentRoute = pages[pages.length - 1].route;

    }
    return currentRoute
}

export default checkVersion